home *** CD-ROM | disk | FTP | other *** search
/ L' Effet Pommier 3 / L'Effet Pommier - Volume 03.iso / Graphismes / 3D / POV-Ray 3.0B5a PPC / POV-Ray 3.0B5a / POVDOC.Documentation / CHANGE3.DOC next >
Text File  |  1996-02-13  |  79KB  |  1,675 lines

  1. This file is a historical record of changes to POV-Ray 3.0 as we develop it.
  2.  
  3. 3.0.beta.5a       02/13/96 Chris Young
  4. Fixed free(ptr) that should be POV_FREE(ptr) in octree.c
  5. Fixed memory leak in declared ttf objects
  6. Misc video changes in MSDOSVID.C; increased MAXMODES for VESA
  7. Changed expiration date from mm/dd/yyyy to dd-mmm-yyyy
  8. Substituted latest PMODE.H & DEBUG.H
  9.  
  10. 3.0.beta.5        02/07/96 Chris Young
  11. Fixed problem with gif decoder on lines longer than 2048 pixels
  12. Fixed bad error reporting when out-of-memory on calloc
  13. Fixed type cast problem in octree.c
  14. Changed beta test banner
  15. Fixed memory leak in declared material_map
  16. Various ttf fixes from Andreas
  17. Fixed watcom bug in zconf.h
  18. Updated all MS-DOS & Windows makefiles for rad_data.c
  19. Added beta expiration to MS-DOS
  20. Fixed +P in MS-DOS animations per DMF's design
  21. Misc Windows fixes for BC 4.52
  22. Added some (tm) signs, updated some copyright notices
  23.  
  24. 3.0.beta.4l       04/Feb/96  Jim McElhiney
  25. Major revision to all radiosity code
  26.   Better set of sample points, stored in new lookup file rad_cache.c
  27.   Multibounce radiosity now supported
  28.   Error bound now adaptive with max possible contribution to surface
  29.   radiosity Initialize/Deinitialize functions installed
  30.   Continue trace after interrupt now supported using <myfile>.rca
  31.     (Radiosity CAche file)
  32.   Free of all radiosity allocated memory after each frame
  33.   No more frame-to-frame cacheing bugs
  34.   Default value auto calculated for Radiosity_Dist_Max:  use 0 if unsure
  35.     (this necessitated saving the user's "look_at" value in camera struct)
  36.   Changed defaults to more general purpose values
  37.   Status line on console now reports new rad samples per line for
  38.     consistency with antialiasing messages
  39.   Preview parameters will not allow you to choose start/end sizes which
  40.     will mess up radiosity.
  41.   Jitter amount in radiosity is smaller, so preview looks better.
  42.   Irradiance gradients implemented, for better quality/speed ratio
  43.   Combination of area lights and radiosity now MUCH faster
  44. Misc:
  45.   VNormalizeEq is now faster, using mult not div
  46.   Light_List_Struct was used (locally) in 2 files for 2 purposes, which
  47.     messes up some debuggers.  One of the structures was renamed to be unique.
  48.   Light_List_Struct now saved and restored in Determine_Apparent_Colour to avoid
  49.     subtle non-reentrancy bug.  (trace a ray, which causes reflections at lower
  50.     level to tag light source contributions as done in light_tested_struct, then
  51.     pop back up to next level, and trace another ray--it used to reuse bad light
  52.     calculations from deeper ray at upper level if more light testing done)
  53.   Quick check in pov_shellout to avoid crashes when shellouts structure used
  54.     but not init'd (not sure why, but check is safer).
  55.  
  56.  
  57. 3.0.beta.4k       02/05/95 Dieter Bayer
  58. Updated "Copyright 1995 Persistence of Vision Team" to 1996
  59.  
  60. 3.0.beta.4j       01/29/95 Chris Young
  61. Fixed bug when #version used inside #if #else #end
  62.  
  63. 3.0.beta.4i       01/26/95 Dieter Bayer
  64. Changed keyword "surface_of_revolution" to "sor"
  65. Fixed bug with three or less focal blur samples
  66.  
  67. 3.0.beta.4h       01/25/95 Chris Young and Andreas Dilger
  68. One more ttf bug squashed.
  69. Misc prototypes added, unused variables removed. Minor junk.
  70.  
  71. 3.0.beta.4g       01/24/95 Chris Young and Andreas Dilger
  72. Replaced default READ_ENV_VAR and PROCESS_POVRAY_INI with warnings to
  73.  insure that each platform implements them.
  74. Updated libpng make files.
  75. Added "Include_Ini=file.ini" to ini parser for file names with blanks.
  76. Fixed TTF code to handle glyph spacing and spaces properly.
  77. TTF now uses the ISO 8859-1 (Latin-1) character set, but has support
  78.   for other character sets once we make the parser handle it.
  79. Still can't handle multiple component glyphs (most accented characters).
  80. Increased the length of a string constant to be up to 127 characters long.
  81.  
  82. 3.0.beta.4f       01/18/95 Andreas Dilger and Tim Wegner
  83. Added function calls to support libpng 0.87 error messages.
  84. Replace Libpng with version 0.87. Make sure Libpng gets copied
  85. to the correct places.
  86.  
  87. 3.0.beta.4e       01/17/96 Steve Demlow
  88. Cleaned up most non-K&R compatable code (except stdarg stuff in userio.c) and
  89.         compiler warnings
  90. Fixed TTF to work when sizeof(short) != 16 bits and sizeof(long) != 32 bits
  91. Fixed minor logic problems in TTF code (with help from Andreas Dilger)
  92. Changed TTF to do file error checking (thanks to Andreas Dilger)
  93.  
  94. 3.0.beta.4d       01/13/96 Dieter Bayer
  95. Fixed bug in total time/frame calculations
  96. Fixed bug in atmosphere calculation (intersect_spotlight())
  97.  
  98. 3.0.beta.4c       01/13/96 Chris Young
  99. Fixed problem with animation output file numbering with subsets.
  100. Fixed problem so string identifiers can be redeclared.
  101. Fixed problem with very long string concats.
  102. Moved "ambient_light COLOR" to global_settings{...} statement.
  103. Changed global_settings { irid_wavelength { COLOR } } to...
  104.         global_settings { irid_wavelength   COLOR   } 
  105. Created Print_Authors() routine from Usage()
  106. MS-DOS: Made banner stream scrollable; added Print_Authors() to sign on.
  107.         Disabled VESA debug.
  108.  
  109. 3.0.beta.4b       01/01/96 Chris Young
  110. Fixed problem with transforming tiles texture identifiers.
  111. Changes from Xander to fix one ttf bug.  Try those fonts that crashed.
  112. Changes from Andreas Dilger
  113.  Changed order of gamma_correct() and Clip_Colour() calls to avoid doing 
  114.   an exponentiation with a negative base (ie pixel value).
  115.  Added interrupt handler for UNIX systems to allow "safe" interruption of 
  116.   a trace with CTRL-C.
  117.  Modified PNG file output to avoid flushing when an output buffer is used.
  118.  Cosmetic changes.
  119.  
  120. 3.0.beta.4a       12/20/95 Dieter Bayer
  121. Changed halo stuff to use transmit instead of filter to store the differential
  122.   translucency instead of the differential opacity (change rgbf into rgbt
  123.   in all your halo scenes and replace the transmittance values by 1-values)
  124. Fixed bug that occured when resuming animations (all but the first image
  125.   were traced again)
  126. Fixed bug with multiple overlapping dust halos (light contribution was tested
  127.   for light rays too and not only for viewing rays)
  128. Fixed sampling bug when -a and +am2 was used (now -a always casts one 
  129.   non-jittered sample per pixel regardless of the sampling method)
  130.  
  131. 3.0.beta.4        12/08/95 Chris Young
  132. Removed build-in float constant "platform"
  133. Removed "#status" language directive
  134.  
  135. 3.0.beta.3l       12/05/95 Dieter Bayer
  136. Changed PNG_POV.C to compile under GCC 2.7.1 with bounds-checking extension
  137. Changed quilt_cubic() to return values between 0 and 1 (and not 0 and sqrt(3/4))
  138.  
  139. 3.0.beta.3k       12/04/95 Tim Wegner
  140. Modified julia_fractal slice field syntax. It is now:
  141.   julia_fractal {
  142.      ... other fields 
  143.      slice <NORMAL4D>,DISTANCE
  144.   }
  145.  where the 3-D slice "plane" is perpendicular to NORMAL4D and is DISTANCE
  146.  units from the origin. NORMAL4D is internally normalized so that DISTANCE
  147.  is correct. The following are illegal:
  148.    slice <0,0,0,0>,d (vector has length zero)
  149.    slice <x,y,z,0>,d (t coordinate of vector is zero)
  150.  The default value makes the slice "plane" the usual x,y,z space:
  151.    slice <0,0,0,1>,0
  152.  The slice plane is intersected the 4-D julia_fractal object and projected 
  153.  to 3-D space by dropping the fourth component of all points.
  154. Also added two small fixes for Chris in texture.c and pattern.c.
  155.  
  156. 3.0.beta.3j       11/23/95 Andreas Dilger
  157. Added flags to allow image file I/O routines to know how image is used.
  158. Changed PNG code to store 16-bit grayscales as true grayscales rather
  159.   than heightfields, when not used as a heightfield.
  160. Changed PNG code to only do input gamma conversion for image maps, and
  161.   to make the conversion to the assumed_gamma value of the scene.
  162. Changed PNG code to always write a 1.0 gamma chunk for histograms and
  163.   grayscale heightfields instead of 1.0/display_gamma.
  164.  
  165. 3.0.beta.3i       11/23/95 Dieter Bayer
  166. Fixed bug with superellipsoids used in CSG (this bug probably occurs in 03g
  167.  and 03h only)
  168.  
  169. 3.0.beta.3h       11/22/95 Chris Young
  170. Fixed problem in express.c with color vectors
  171. Added image_map{... transmit REG,VALUE} and transmit all VALUE.
  172. MSDOS: Started to implement VESA 2.0 but found other bug and fixed it.
  173.  
  174. 3.0.beta.3g       11/22/95 Dieter Bayer
  175. Fixed bug in ATMOSPH.C that occured when no light sources were used
  176. Fixed bug with transparent objects blocking background
  177. Fixed bug with transparent image maps (in TEXTURE.C) as mentioned by Chris Y.
  178. Fixed bug in superellipsoid intersection test (TRUE was returned in some
  179.   cases by All_Superellipsoid_Intersections() even though there was no
  180.   intersection)
  181.  
  182. 3.0.beta.3f       11/18/95 Chris Young
  183. Minor fractal changes by Tim Wegner
  184. Changed COEFF_LIMIT to 1e-16 fixing Watcom prism bug
  185. Fixed another #while bug
  186. MSDOS:Changed box params from char to int
  187.       Fixed DJGCC use of / in argv[0]
  188.       Added warning if POVINI points to non-existent fil
  189.       Fixed bug in Select_VESA_Mode.  
  190.       Added many Debug messages in VESA, will remove later.
  191.  
  192. 3.0.beta.3e       11/14/95 Chris Young
  193. Eliminate READ_ENV_VAR_BEFORE and READ_ENV_VAR_AFTER
  194. Added READ_ENV_VAR which should read a POVINI which points to the user
  195.  specified global INI file.
  196. Added PROCESS_POVRAY_INI function.  If there was no POVINI specified then
  197.  this routine should read povray.ini from the executible directory.  If
  198.  there was a POVINI then this step is skipped.
  199. Removed all other automatic processing of povray.def and povray.ini even
  200.  in the current directory.
  201. Converted Split_Time to SPLIT_TIME macro and added POV_Std_Split_Time
  202. Added pre_init_povray to povray.c, see comments on routine.
  203. Removed disabled field rendering for non-animations.
  204. MSDOS: Implemented MSDOS_Process_Povray_Ini and MSDOS_Process_Env
  205. PVENGINE: Partially pre_init_povray
  206.  
  207. 3.0.beta.3d       11/11/95 Dieter Bayer
  208. Fixed missing initialization for Jitter_X and Jitter_Y in 
  209.   trace_ray_with_offset() (RENDER.C) if no anti-aliasing is used
  210. Fixed bug in do_atmospheric_scattering() that led to a lot of unnecessary
  211.   neglectable samples 
  212. Fixed bugs in intersect_spotlight() and intersect_cylinderlight() in
  213.   ATMOSPH.C that caused lots of samples due to wrong light intervals
  214. Fixed bug in Trace() and Trace_Primary_Ray() that caused atmosphere
  215.   inside hollow objects to not work properly
  216. Fixed memory problems with high +r values and adaptive sampling
  217.  
  218. 3.0.beta.3c       11/09/95 Chris Cason
  219.   Modified userio.c to make vsbuffer global, to allow PVEngine to allocate
  220.   it and to thus call Usage () without starting up the renderer.
  221.  
  222.   Merged below patches from Andreas Dilger and Eduard Schwan.
  223.  
  224.   Eduard Schwan
  225.  
  226.     Fixes to truetype.c to make it Mac-friendly, by using READ_FILE_STRING
  227.     for the open mode instead of "rb". Changed vbuffer.c such that the function
  228.     POV_Std_Display_Plot_Box () takes int parameters for the colours, instead
  229.     of chars.
  230.  
  231.   Andreas Dilger
  232.  
  233.     Moved histogram size initialization code from initialize_histogram() in
  234.       render.c to fix_up_rendering_window() in povray.c so that the values
  235.       are available when doing the Print_Options() call.
  236.     Changed the default histogram file name to have the correct extension
  237.       if the user doesn't supply the histogram file name.  This is done at the
  238.       options parsing stage so the filename is available for Print_Options().
  239.     Added missing histogram CSV file type to help screen display.
  240.     #defined out code in radiosit.c and pattern.c that was unused.
  241.     + Fixed unix config file header to match current default settings, and tried
  242.       to get better default settings for maximum filename length.
  243.     Added xwindows options to unix makefile, so only one makefile is needed.
  244.     Removed unused variables from xwindows.c.
  245.  
  246. 3.0.beta.3b       11/08/95 by Chris Young
  247.  Added box drawing macro POV_DISPLAY_DRAW_BOX to frame.h and created
  248.  default POV_Std_Display_Draw_Box.  Needed for MSDOS version.
  249.  Renamed Terminate to Terminate_POV and fixed param
  250.  Changed Split_Time params to unsigned in hopes of fixing Amiga problem.
  251.  MSDOS:Added non-dithered box drawing. Changed subset window to green.
  252.  Fixed PNG image map palette size for grayscale images with bit-depth <= 8.
  253.  Changed the method of promoting 9-15 bit OutputQuality images to fit in
  254.   16-bit colors from high-bit-set to zero-fill based on recommendations
  255.   from the PNG 0.90 specification.
  256.  
  257. 3.0.beta.3a       11/06/95 by Dieter Bayer
  258.  Uncommented debug stuff in TRUETYPE.C
  259.  Fixed bug in hfield.c/boxes.c that caused segmentation fault with DJGPP
  260.  Fixed problems with comp_elements() in BSPHERE.C as suggested by Andreas Dilger
  261.  
  262. 3.0.beta.3        10/31/95 by Chris Young
  263. Fixed yet another #case bug.
  264. Fixed memory leaks on multiple color_maps
  265. Fixed problem with "once" on image_maps
  266. Fixed text buffer overflow that made long smooth_triangle error msg crash
  267. Added truetype changes from Steve & Xander
  268. Added ALT_WRITE_INI_FILE macro for below
  269. WIN: Fixed rerun problem with above macro
  270.  
  271. 3.0.beta.2g       10/23/95 by Chris Cason
  272. Numerous changes to support Windows code.
  273.   In set_output_file_handle (), removed test where the output file handle
  274.     was only set if output_to_file was TRUE to fix problem with GPF's in
  275.     continue trace.
  276.   Moved some typedef's, #defines, etc., from OPTIN.C to OPTIN.H.
  277.   Exposed some formerly static functions/variables in OPTIN.C.
  278.   Changed order of inclusion of OPTIN.H/OPTOUT.H relative to POVRAY.H in
  279.     some modules as OPTIN.H and OPTOUT.H depend on a typedef in POVRAY.H.
  280.   Removed most #if PRECISION_TIMER_AVAILALE tests that had been peppered
  281.     throughout the code by a previous patch in line with the team's policy
  282.     of keeping the use of #ifdef and so forth in the source code to a mimimum.
  283.   Re-introduced these defines to one specific area of the source (the
  284.     histogram code section).
  285.   Added new function initialise_histogram() which will set opts.histogram_on
  286.     to FALSE if PRECISION_TIMER_AVAILALE == 0. Calls to histogram code are
  287.     only made if opts.histogram_on is TRUE.
  288.   Re-introduced sanity-check and auto grid sizing code in histogram
  289.     initialisation that had been removed by a previous patch.
  290.   Added some new #DEFINE's to FRAME.H, called from POVRAY.C, to support
  291.     GUI's being able to get control at specific times (such as immediately
  292.     before rendering begins, to allow PVENGINE to write its own rerun
  293.     information.) These are -
  294.  
  295.       POV_PRE_RENDER      Called immediately before rendering begins.
  296.                           Hook any code that needs to access global data
  297.                           prior to rendering and/or write or display run-
  298.                           specific statistics into this.
  299.       POV_PRE_SHUTDOWN    Called just before shutdown (before destruction
  300.                           of any information held in memory.) Hook any code
  301.                           that needs to access this global data after
  302.                           rendering into this.
  303.       POV_POST_SHUTDOWN   Called after destruction of above is complete.
  304.                           Hook any platform-specific destructors into this.
  305.  
  306. 3.0.beta.2f       10/16/95 by Chris Young
  307. Fixed #switch #case bug.
  308.  
  309. 3.0.beta.2e       10/16/95 by Dieter Bayer 
  310. Changed hollow keyword from a finish parameter to an object parameter
  311.   (with changing all corresponding sources bugs with translucent 
  312.    material maps should be gone)
  313. Fixed bug with BLOB1?.POV scenes
  314. Fixed bugs in Read_Png_Image() in PNG_POV.C (png_ptr was used instead
  315.   of r_png_ptr; that caused a segmentation fault with PNG image maps)
  316.   Andreas Dilger or Timothy Wegener PLEASE VERIFY THIS!!!
  317. Fixed gradient and crackle bugs (hopefully; in some cases lots of 
  318.   speckles appeared)
  319. Fixed memory leakage in XWINDOWS.C
  320. Fixed "pause when done"-bug in XWINDOWS.C (the display window is now closed
  321.   for -p and closed after pressing a mouse button in the window for +p)
  322. Fixed bug in PPM.C that caused a segmentation fault when an aborted 
  323.   PPM image was read
  324. Fixed supersample count bug with adaptive supersampling (the number of
  325.   supersamples on the last line were displayed to be always 0)
  326. Fixed bug in halo parsing (as noted by Chris Young)
  327. Fixed bug in halo parsing (now a fatal error occurs if no color map is specified)
  328. Fixed bug in do_atmospheric_scattering (sampling took a very long time
  329.   for non-white light sources because early exit did not work)
  330. Fixed bug in OCTREE.C that occured when RADSTATS was defined (the file
  331.   no longer compiled as reported by Eduard Schwan)
  332.  
  333. 3.0.beta.2d       10/10/95 by Chris Young
  334. Added built-in identifier t=<0,0,0,1> and vector.t capability.
  335. Fixed stuff with vector.u and vector.v.
  336. Lots of internal changes related to t, u & v.
  337. Fixed msdos error buffer problem.
  338. Following changes from Andreas Dilger
  339.  Changes error messages in iff.c, gif.c, and targa.c to be consistent with 
  340.   other formats.
  341.  Added tests for output file write errors (after c.g.r.r)
  342.  Adds histogram timer for unix systems.
  343.  Adds support for PNG images with both grayscale and alpha.
  344.  Changed error messages to be consistent with other formats.
  345.  Adds support for ASCII format PPM and PGM images, as well as
  346.   allowing comments and arbitrary bit depth in input images.
  347.  Added defined out code for PPM output comments ala PNG.
  348.  Fixed histogram support for non-PNG images.  Added output
  349.   of histogram options in banner when histogram is active.
  350.  Modified output of display gamma to be part of display options.
  351.  Fixes resume from a file which has different size settings than those 
  352.   given on the command line.
  353.  
  354. 3.0.beta.2c       10/06/95 by Dieter Bayer 
  355. Applied noise patch by ? solves platform dependent noise problems)
  356. Added missing module headers to OCTREE.C and RADIOSIT.C
  357. Fixed bug in hfield.c (holes appeared due to missing rays)
  358. Fixed memory leak occuring with material maps
  359.  
  360. 3.0.beta.2b       10/05/95 by Andreas Dilger and Tim Wegner 
  361. Added gamma support. 
  362.   New ini option
  363.     Display_Gamma=2.2 (default, can be changed in config.h)
  364.   New scene command: global_settings { assumed_gamma n.nn }
  365.     If not present, no gamma correction done. For platform-independent
  366.     output without gamma correction, set assumed_gamma to display_gamma 
  367.     (e.g. 2.2). For "linear light" (gamma correction for display_gamma) 
  368.     use assumed_gamma 1.00.
  369. Added PNG histogram output. IMPORTANT - changes the +HT flag
  370.   so that +HTN means PNG histogram, and not NO histgram. No histogram
  371.   is now +HTX.
  372. Fixed bug in Close_PPM_File, changed default RENAME_FILE command
  373.  
  374. 3.0.beta.2a       10/04/95 by Dieter Bayer 
  375. Fixed illegal quality value bug for quality values larger 9
  376. Fixed unused radiosity bug for quality values > 9
  377. Fixed memory leaks with text objects
  378. Fixed bug in image reading (line_data->transm wasn't initialized to NULL
  379.   in PNG_POV.C and TARGA.C)
  380.  
  381. 3.0.beta.2        09/24/95 by Dieter Bayer 
  382. Fixed numerical problems with far away blobs
  383. Fixed bug with high +r values (Primary rays were weighted with an ADC
  384.   bailout value other than 1. That's not allowed!)
  385. Fixed bug in ra_gather() in RADIOSIT.C (ray wasn't initialized using
  386.   Initialize_Ray_Containers())
  387. Fixed bug in HCMPLX.C as mentioned by Tim Wegner
  388.  
  389. 3.0.beta.1e       09/21/95 by Eduard Schwan
  390. Minor changes to resynch the Macintosh compile:
  391. PAT3b1e.pat
  392.  optout.h: included frame.h, since I include it elsewhere, it needs the
  393.   definition of PARAMS().  I personally think EVERY header file should
  394.   be able to be compiled by itself, which means it needs to include
  395.   everything necessary for itself.  Then you can just add an include of
  396.   it, and it takes care of its own dependencies.
  397. PATzlb1e.pat
  398.  Zlib: added #ifndef around deflate.h, added include of string.h and a
  399.   define of Byte to something else in zconf.h, undeffed internal_state
  400.   in deflate.h.
  401. PATpng1e.pat
  402.  libpng: added missing prototype for "png_output_flush" in png.h
  403. To be fixed later... I also got these warnings in LIBPNG, which should
  404. probably be fixed (missing prototypes?)
  405.  Warning : function has no prototype
  406.  PNGRTRAN.C line 454   {
  407.  PNGRTRAN.C line 1121   {
  408.  PNGRTRAN.C line 1165   {
  409.  
  410. 3.0.beta.1d       09/19/95 by Chris Young
  411. Added pov_memcpy which needs to be tested by those without memcpy.
  412. MSDOS & WINDOWS: Changes to config.h in RENAME_FILE
  413. **BEWARE** the duplicate PNG.H PNGCONF.H ZLIB.H & ZCONF.H have
  414.  been removed from SOURCE and exist only in SOURCE/ZLIB & SOURCE/LIBPNG.
  415.  Also the COPYTO.BAT & COPYFROM.BAT files have not been updated to
  416.  copy these files.  You must hand copy them.  Later COPYTO/COPYFROM
  417.  will be obsolete so I didn't bother updating them.
  418.  
  419. 3.0.beta.1c       09/18/95 by Tim Wegner
  420. Cleaned up fractal code, removed julia_parameter keyword, and added a whole 
  421. lot more functions. Syntax is now:
  422.  
  423.  julia_fractal {
  424.          VECTOR4D
  425.          [quaternion | hypercomplex]
  426.          [sqr | cube | exp | reciprocal | sin | asin | sinh | asinh |
  427.           cos | acos | cosh | acosh | tan | atan | tanh | atanh | log |
  428.           pwr(FLOAT,FLOAT)]
  429.          max_iteration INT
  430.          precision FLOAT
  431.          slice VECTOR4D
  432.  }
  433.  
  434. The one function that needs explanation is pwr(FLOAT,FLOAT). This is the
  435. function (in C terminology) that raises the complex number z to the complex
  436. power (FLOAT,FLOAT). For example, the case pwr(2,0) gives the same image as 
  437. sqr (though it renders much more slowly.)
  438.  
  439. Most of these functions work only with algebra type hypercomplex. The only
  440. ones that work with quaternion are sqr and cube. I added a trap for this
  441. error.
  442.  
  443. Note that if any of these keywords which are not already supported by the
  444. expression parser become supported in the future, then the 
  445. Parse_Julia_Object() routine would need to be changed to reflect this (an
  446. easy change).
  447.  
  448. 3.0.beta.1b       09/16/95 by Tim Wegner and Andreas Dilger
  449. PMG support now resumes and works for height fields, and should work for
  450. image maps and bump maps. Added Alpha support for PNG output, and made Targa
  451. and PNG handling of Alpha consistent. Added NO_MEMMOVE define to unixconf.h
  452. which uses memcpy instead on systems without memmove, and protects against
  453. copying overlapping memory areas. I've included Andreas's changes to the
  454. UNIX make file for Chris Cason's information (not intended to pre-empt any
  455. decisions about where Libpng, Zlib directories should go.) The source has 
  456. been compiled with unixconf.h on AIX with the IBM xlc compiler, and it
  457. works fine so we don't need a separate rs6conf.h.
  458.  
  459. 3.0.beta.1a       09/10/95 by Eduard Schwan
  460. Fixed incorrect parm passed to png_write_finish_row in PNG_POV.C.
  461. The "#define W 3" conflicted with variables in POLYGON.C if precompiled headers
  462.   were used, so I changed the "W" variable names there, and moved the define
  463.   from FRACTAL.H to FRAME.H, to join its buddies X,Y,Z.
  464. Removed incorrect trailing comma from ini_op enums in OPTIN.C.
  465. Added a couple more cooperates in the bounding/light buffer code, since we
  466. can be looping in there for awhile without letting the GUI breathe.
  467.  
  468. 3.0.beta.0d       09/07/95 by Chris Cason
  469. Returned COOPERATE calls to a few places (probably different from original).
  470. Changed COOPERATE to COOPERATE_0 and COOPERATE_1 in source code and modified
  471.   frame.h such that this would not break code depending on the use of COOPERATE.
  472.   COOPERATE_0 is a high level one that is less likely to be ignored than
  473.   COOPERATE_1, if the GUI's niceness setting is in mean mode. COOPERATE_0 is
  474.   intended to be called less frequently by the renderer.
  475. Added POV_PRE_PIXEL and POV_POST_PIXEL which always get called even if display
  476.   mode is turned off. Both macros take x, y and colour.
  477.  
  478. 3.0.beta.00c      09/05/95 by Tim Wegner
  479. You should delete the files gfract.* (obsolete) and julia.* (renamed). 
  480. The patch file will create two new files quatern.c and quatern.h which
  481. were formerly the julia.* files.
  482.  
  483. Completely reorganized the fractal format. The new syntax for the fractal 
  484. object is as follows, with all parameters optional, and in any order:
  485.  
  486.  julia_fractal {
  487.          julia_parameter VECTOR4D
  488.          quaternion | hypercomplex
  489.          sqr | cube | exp | reciprocal
  490.          max_iteration INT
  491.          precision FLOAT
  492.          slice VECTOR4D
  493.  }
  494.  
  495. sqr was z2 and cube was z3. The old "fractal" is obsolete. The old "julia"
  496. object is what you get with the quaternion keyword present. The slice 
  497. keyword is new. It allows the 4D fractal object to be sliced by a 3D "plane" 
  498. at any angle.
  499.  
  500. There's a new routine called parse_Vector4D() in case anyone needs it for
  501. other purposes.
  502.  
  503. 3.0.beta.00b      09/03/95 by Dieter Bayer
  504. Added PNG support by Tim Wegner and Andreas Dilger
  505. Added Bits_Per_Color/Bits_Per_Colour INI file keyword (used by PNG)
  506. Added Andreas Dilger to the contributing authors list
  507. Added redirection options to the render option output
  508. Added matrix transform to all places where transformations are allowed
  509. Moved hollow keyword into finish statement. NOTE that in order to see
  510.   any halos inside an object you have to make sure that the finish
  511.   is set to hollow
  512. Changed "r" file options to READ_FILE_STRING (that's "rb")
  513. Renamed PNC.C to PNC_POV.C and added PNG_POV.H to avoid conflicts with
  514.   PNG.C and PNG.H that come with the PNG library
  515. Renamed project_* functions in VBUFFER.C in order to avoid problems
  516.   with the Watcom linker
  517. Fixed bug that occured in MSDOSVID.C when the console output of the render
  518.   stream was turned off (a segmentation violation occured due to a NULL
  519.   pointer access in Viewit)
  520. Fixed bug in halo default color map assignment
  521. Fixed some memory bugs in PNG_POV.C
  522. Fixed bug in multi-textured blobs
  523. Updated MSDOS DJGPP make & link files and Unix makefiles
  524.  
  525. 3.0.beta.00a      08/29/95 by Dieter Bayer
  526. Added Zsolt Szalavari to the contributing authors list
  527. Replaced strupr() and strlwr() in express.c by own functions to make it work
  528.   with Unix and other systems that don't have those functions
  529. Removed unused distance parameter from halo
  530. Fixed help screen problems
  531. Updated Unix make files
  532.  
  533. 3.0.beta.0        08/29/95 by Chris Young
  534. Added #ifdef (IDENTIFIER) language directive. See VECT2.POV
  535. Added %w and %h (width, height) substitution for shell strings
  536. Added black_hole warps by Chris Cason
  537. Dropped dump and raw format.  Remove DUMP.C DUMP.H RAW.C RAW.H
  538. Added re-directable macros for new "sys" file type for system specific
  539.  format such as Mac Pict or Windows BMP.  Macros in FRAME.H.
  540.  Support added via "sys" keyword such as "image_map{sys "file.ext"..."
  541.  and via +FS switch.
  542. Added string functions "strupr(STRING)" and "strlwr(STRING)" same as C
  543. Added built-in UV_VECT constants "u" value <1,0> and "v" value <0,1>
  544. Added . period operator for VECT.x VECT.y VECT.z UV_VECT.u UV_VECT.v
  545.   COLOR.red COLOR.green COLOR.blue COLOR.filter COLOR.transmit
  546. Added built-in float constant "platform".  Defined in CONFIG.H 
  547. Added boolean function "file_exists(STRING)" searches current dir and +L
  548. Added integer function "strcmp(STRING1,STRING2)" same as in C strcmp
  549. Changed string function "num_to_string(F,W,P)" to "str(F,W,P)"
  550. Changed float function "atof(STRING)" to "val(STRING)"
  551. Changed variables "Point" to "IPoint" in HCMPLX.C
  552. Fixed spelling on "eccentricity"
  553. Fixed bugs in #if #else
  554. Minor change in default file processing
  555. Misc Error and Warning message changes by Dieter
  556. Updated make files for removal of dump and raw.
  557.  
  558. 3.alpha.0.19      08/27/95 by Dieter Bayer
  559. Added halo stuff by Zsolt Szalavari (did some changes and improvements).
  560.   The syntax is (docs will follow later, sigh):
  561.     texture {
  562.       halo {
  563.         attenuating | emitting | glowing | dust
  564.         constant | linear | cubic | poly
  565.         planar_mapping | spherical_mapping | cylindrical_mapping | box_mapping
  566.         fog_type FLOAT
  567.         max_value FLOAT
  568.         exponent FLOAT
  569.         samples FLOAT
  570.         aa_level FLOAT
  571.         aa_threshold FLOAT
  572.         turbulence VECTOR
  573.         octaves FLOAT
  574.         omega FLOAT
  575.         lambda FLOAT
  576.         colour_map COLOUR_MAP
  577.         frequency FLOAT
  578.         phase FLOAT
  579.         scale VECTOR
  580.         rotate VECTOR
  581.         translate VECTOR
  582.       }
  583.     }
  584. Added matrix transform by Steve Demlow (see sample scenes matrix.pov,
  585.   shear1.pov and shear2.pov)
  586. Added distance based light attenuation for translucent objects. Syntax:
  587.   finish {
  588.     ...
  589.     fade_distance FLOAT
  590.     fade_power FLOAT
  591.     ...
  592.   }
  593.   The light is attenuated in a linear, quadratic, cubic, etc. fashion
  594.   (according to the fade_power value). At distance fade_distance
  595.   the attenuation is 50% (see sample scene atten1.pov).
  596. Added new atmospheric scattering type 5 (Heyney-Greenstein function
  597.   with paramter given by "excentricity" keyword)
  598. Added attenuation of light coming from light sources due to fog and/or
  599.   atmosphere (by default this is not used, i.e. the light is not
  600.   attenuated; the keyword "atmospheric_attenuation" is used with 
  601.   light sources to switch the attenuation on/off) (see sample scene fog2.pov)
  602. Added attenuation due to fog and/or atmosphere inside an object (by default
  603.   this is off, i.e. there's no fog/atmosphere inside any object; this
  604.   can be changed by using the keyword hollow, i.e. hollow FLAG)
  605.   (see sample scene fog2.pov)
  606. Modified and simplified atmosphere supersampling
  607. Removed unnecessary support for bounded fog
  608. Fixed bug in Test_Shadow() (LIGHTING.C)
  609. Fixed bug in trace_pixel() (RENDER.C): uninitialized variables
  610. Fixed bug in Global_Setting_Warn(), PARSE.C
  611. Fixed bug in Post_Tnormal(), NORMAL.C (slopemap.pov)
  612. Fixed memory problem detected by Purify in Destroy_Blob(), BLOB.C
  613. Fixed memory problem detected by Purify in Create_BMap_Entries(), COLOUR.C
  614. Fixed memory problem detected by Purify in Create_Fractal(), FRACTAL.C
  615. Fixed memory problem detected by Purify in Read_Gif_Image(), GIF.C
  616. Fixed memory problem detected by Purify in Get_Dump_File_Handle(), DUMP.C
  617. Fixed memory problem detected by Purify in Get_PPM_File_Handle(), PPM.C
  618. Fixed memory problem detected by Purify in Get_Raw_File_Handle(), RAW.C
  619. Fixed memory problem detected by Purify in Get_Targa_File_Handle(), TARGA.C
  620. Fixed memory problem detected by Purify in Tokenize_Renderer(), RENDER.C
  621. Lots of cosmetic changes (new header layout, added headers)
  622. Updated MS-DOS make & link files
  623. Updated Unix make & link files
  624. Updated Unix xwindows.c file (new file supports true color displays)
  625.  
  626. 3.alpha.0.18t     08/15/95 by Chris Young
  627. Added "brick_size <VECTOR>" and "mortar FLOAT"
  628. Other brick changes.
  629. Added shellout return code processing.
  630. MSDOS:Changes to implement return codes.
  631.  
  632. 3.alpha.0.18s     08/08/95 by Dieter Bayer
  633. Added Pascal Massimino and Timothy Wegner to the credit screen
  634. Split credit screen into primary developer and major contributor part
  635. Removed useless VSqr() macro
  636. Fixed some field rendering problems
  637. Fixed unwanted jittering of inital rays in antialiased images
  638. Fixed unwanted jittering with non-antialiased images
  639. Fixed bounding bug in BLOB.C
  640.  
  641. 3.alpha.0.18r     08/07/95 by Chris Young
  642. Fixed problems with \ in file names.
  643. Moved caustics code to fix texture_map bugs.
  644. Removed Max_Symbols, +QH and radiosity from INI & switches.
  645. Added global_setting {
  646.        irid_wavelength COLOR
  647.        max_trace_level FLOAT    // int internally
  648.        adc_bailout FLOAT
  649.        number_of_waves FLOAT    // int internally
  650.        max_intersections FLOAT  // int internally
  651.        radiosity {
  652.          brightness FLOAT
  653.          count FLOAT            // int internally
  654.          distance_maximum FLOAT
  655.          error_bound FLOAT
  656.          gray_threshold FLOAT
  657.          low_error_factor FLOAT
  658.          minimum_reuse FLOAT
  659.          nearest_count FLOAT    // int internally
  660.          recursion_limit FLOAT  // int internally
  661.        }
  662.        hf_gray_16 [FLOAT]   // optional boolean
  663.       }
  664. Fixed #while(COND) bug
  665. Some truetype updates from Xander.
  666. MSDOS:Updated make files.
  667.  
  668. 3.alpha.0.18q     08/06/95 by Dieter Bayer
  669. Added field rendering command line switches (+UF +UO)
  670. Added anti-aliased focal blur (Standard aa is switched off when focal blur
  671.   is used. The user is warned about this.)
  672. Added early exit test for focal blur based on confidence test
  673.   New camera keywords: 
  674.     confidence - Determines how sure the confidence test is, i.e. how
  675.                  likely the pixel color is "close" to the real value.
  676.                  The default value is 0.9.
  677.     variance   - Maximum allowed variance. If the variance of the samples
  678.                  in a pixel is greater than this value the maximum number
  679.                  of samples will be used (i.e. the blur_samples value).
  680.                  This parameter should be of the same magnitude as the
  681.                  color resolution (on an 8bit per color display the 
  682.                  color resolution is 1/2^8). The default value is 1/128.
  683. Added adaptive supersampling method (ini file: Sampling_Method):
  684.   +AM1 : non-adaptive supersampling
  685.   +AM2 : adaptive supersampling
  686. Fixed some bugs I introduced in 18p due to patch problems
  687. Fixed some field rendering bugs:
  688.   odd/even line tracing switches from frame to frame now
  689.   unnecessary supersampling of pixels above the current line is avoided
  690.  
  691. 3.alpha.0.18p     08/03/95 by Dieter Bayer
  692. Fixed focal blur bug I introduced with patch 18l
  693. Fixed resampling bug of center sub-pixel during supersampling
  694. Fixed bugs in matches() (OPTIN.C)
  695. Changed some calls and other (unnecessary) stuff in RENDER.C
  696.  
  697. 3.alpha.0.18o     08/03/95 by Jeff Bowermaster
  698. Implemented Field Rendering for NTSC/PAL Animation 
  699. Keywords "Field_Render=bool" and "Odd_Field" substituted for Interlace..
  700.  
  701. 3.alpha.0.18n     07/31/95 by Chris Young
  702. Fixed big problem with Keyword=bool
  703. Other minor changes
  704.  
  705. 3.alpha.0.18m     07/28/95 by Chris Young
  706. New string manipulation functions...
  707.   num_to_string(VALUE,LENGTH,PRECISION) creates string from float value
  708.   chr(VALUE) creates 1 character string, e.g. chr(169) makes a copyright
  709.   concat(STRING,STRING) concats two strings
  710.   substr(STRING,START,LENGTH) e.g. substr("ABCDE",2,3) returns "BCD"
  711. New float valued functions...
  712.   atof(STRING) returns float value represented by string atof("1.2")=1.2
  713.   asc(STRING) returns ASCII value of first char of string, asc("A") is 65.0
  714.   strlen(STRING) length (in chars) of string (see STRINGS.POV)
  715. New language directives print messages (see MESSAGE.POV)
  716.   #warning STRING  #debug STRING  #error STRING  #render STRING
  717.   #status STRING  #statistics STRING
  718.    During parsing, sends string to corresponding text stream 
  719.   String expressions above work for ttf, #include and image_map, bump_map,
  720.    material_map names.  Basically all strings.
  721. Can declare string identifiers.
  722. Partial support for \n \r \t etc.  Only works in messages, not in ttf.
  723. Changed Bits_Per_Pixel to Output_Alpha=bool and +UA -UA
  724. Implemented #while (COND)... #end loop (see WHILE1.POV)
  725. MSDOS: Remove ICB compiler support, removed TARGA+ board support
  726. IBM: Dropped whole MACHINE\IBMPC directory.
  727.  
  728. 3.alpha.0.18l     07/26/95 by Dieter Bayer
  729. Changed a lot of memory allocations in BBOX.C, LBUFFER.C, LIGHTNING.C,
  730.   MESH.C, VBUFFER.C and VLBUFFER.C in order to avoid unnecessary mallocs/
  731.   frees during the main tracing loop 
  732. Changed DEPTH_TOLERANCE in planes.c due to infinite loop with SKYVASE.POV
  733. Changed calls to free() and malloc() into calls to POV_FREE() and
  734.   POV_MALLOC() in OCTREE.C, PPM.C and RADIOSIT.C (the memory allocated
  735.   during radiosity isn't freed yet!)
  736. Fixed bug in rainbow arcs when a filter value is used (the rainbow didn't
  737.   fade away anymore)
  738. Fixed "Refrated" typo in OPTOUT.C
  739. Fixed focal blur bug (the focal plane is in the right place now)
  740.  
  741. 3.alpha.0.18k     07/25/95 by Eduard Schwan
  742. Changed r,g,b,a parms in POV_Std_Display_Plot & Rect in USERIO.C/H from
  743.  unsigned char to unsigned int to resolve a Mac (Metrowerks) compiler bug
  744.  (MW got confused on the mixed K&R and ANSI styles for these.)
  745. Fixed inconsistencies & Mac problems in JULIA.C/H.  Some prototypes left
  746.  out the parameter name, some function decl.s were ANSI, and the Macintosh
  747.  has a type defined as "Point", so I renamed all "Point" parameters to
  748.  "point".
  749. Added a COOPERATE call in BBOX.C during sort_and_split, so Macs don't
  750.  hang during the building of big bounding box trees.
  751. Fixed Truman's "disappearing cylinder" bug in MATRICES.C, changed the
  752.  ever-questionable "if (fp==1.0)" to the more robust "if (fabs(fp-1.0)<Eps)"
  753.  
  754. 3.alpha.0.18j     07/23/95 by Chris Young
  755. Made -B switch turn buffer off, added Buffer_Output=bool
  756. Rewrote some of text redirection, fixed bugs, made =bool work for any bool
  757. Fixed Create_Ini=bool
  758. Deleted Banner_File and Banner_Console redirection
  759. Deleted +@ -@ stuff, replaced with warning message.
  760. Deleted +Z -Z Debug= stuff
  761. Moved mosaic preview error checking and relaxed it.
  762. Other mosaic preview and radiosity preview fixes.
  763. Turned Gamma_Correct into optional macro.
  764. MSDOS:Turned dither off in draw box and Plot_Rect.
  765. MSDOS:More make file changes/fixes
  766.  
  767. 3.alpha.0.18i     07/20/95 by Chris Young
  768. Added Interlace= and Interlace_Odd= INI settings but did not implement
  769.  actual odd/even interlace.
  770. Added +Q10 to turn radiosity on but did not yet make other radiosity
  771.  changes nor did not yet do radiosity{...} statement.
  772. Added User_Abort_Command=sss and Fatal_Error_Command=sss shell outs.
  773. Removed +MS -MS and replaced it with Warning
  774. Removed +NFI +NFF +Unnn switches
  775. Removed VerboseFormat
  776. Fixed bug that light buffer INI set vista buffer by mistake
  777. Fixed #ifdef PRECISION_TIMER_AVAILABLE that should have been just #if
  778. Updated various MS-Dos make files for fractal stuff
  779. Fixed bug in MSDOS\COPYFROM.BAT that copied MSDOS\*.* files into
  780.  compiler-specific directories by mistake.  If you have a file in a
  781.  compiler-specific directory that is also in MACHINE\MSDOS then delete it 
  782.  from the compiler-specific directory and only keep it in MACHINE\MSDOS.
  783.  
  784. 3.alpha.0.18h     07/16/95 by Dieter Bayer
  785. Added extra stats to the stats screen
  786. Added code to LIGHTING.C, RENDER.C and VBUFFER.C to use the transmittance
  787.  value of a pixel for the alpha channel
  788. Added Pascal Massimino's fractal stuff (adopted by Tim Wegner)
  789. Changed parameters to Intersect_Sphere() function
  790. Changed fractal bounding sphere tests to call Intersect_Sphere()
  791. Fixed bug with pigment colors of the type rgbt<0, 0, 0, t> with t > 0
  792.  
  793. 3.alpha.0.18g     07/12/95 by Dan Farmer
  794. Reversal of patch 3.alpha.0.18c (Garnder clouds removed).
  795.  
  796. 3.alpha.0.18f     07/12/95 by Chris Young
  797. Moved the Pre-Frame and Post-Frame commands to different location.
  798. Added screen save/restore in MSDOS version before/after all 4 shellouts.
  799. Fixed 0.0 to 1.0 range on wrinkle and waves pigment.
  800. Added Histogram_Type=N for no histograms.
  801. Fixed various Create_INI=rerun.ini problems.
  802. Fixed bug with continued animations.
  803. Added substitution options to the shellout commands.  New options
  804.  are %s for scene name, %f for frame number and %k for clock value.
  805.  
  806. 3.alpha.0.18e     07/07/95 by Dieter Bayer
  807. Added check for zero memory allocation to mem.c (only if MEM_HEADER is defined)
  808. Added caustics keyword to finish structure (caustics FLOAT). Default is
  809.   0, i. e. no caustics are simulated. A good value for caustics is 1.0
  810. Changed mesh counters from int to long
  811. Removed obsolete caustics_power ini keyword
  812. Fixed zero allocation list of temporary light list in lighting.c
  813. Fixed extra data bug in GIF.C as suggested by Chris Cason
  814.  
  815. 3.alpha.0.18d     07/05/95 by Chris Young
  816. Added default extensions for all input files (.pov, .inc, .tga, .gif etc)
  817. Added default output file name based on input file name.
  818. Fixed bugs in .INI parsing which cause some options to be wiped out.
  819. Fixed bug which caused superelipsoids not to work in csg.
  820. Added text buffers with scroll-back to MSDOS version.
  821. Misc cleanup of MSDOSTXT.C, MSDOSVID.C and IBM.C and make files.
  822.  
  823. 3.alpha.0.18c     06/22/95 by Dan Farmer
  824. Added Gardner-style cloudplane pigment.
  825.  
  826. 3.alpha.0.18b     06/22/95 by Chris Young
  827. Changed "display_..." functions to "POV_DISPLAY_..." macros.
  828. Added alpha output to POV_DISPLAY_... so Mac version can save alpha
  829. Began major restructuring of MACHINE\IBM into MACHINE\MSDOS.
  830. Added Kendall's console handling stuff to MSDOS vers.
  831.  
  832. 3.alpha.0.18a     06/17/95 by Eduard Schwan
  833. Removed unnecessary COOPERATE calls bogging down Mac version.
  834. Fixed check_stats to display mosaic information and initial clock info.
  835. Moved a too-tightly-nested CR output in verbose mosaic mode.
  836.  
  837. 3.alpha.0.18      06/09/95 by Chris Young
  838. Major clean-up of last several patches.
  839. Fixed Library_Path= bug.
  840. TTF file open now searches +L paths.
  841. Major memory leaks fixed in tiles, texture_map and ttf.
  842.  
  843. 3.alpha.0.17m     06/09/95 by Dieter Bayer
  844. Added alpha channel support for Targa files (+f32 command line option and
  845.  Bits_Per_Pixel ini file option to save 32bit Targas; they are automatically
  846.  detected during reading and the alpha channel is used as transmittance. 
  847.  The alpha channel is non-premultiplied and uses a value of 0 for 100% 
  848.  transparency and a value of 255 for 0% transparency)
  849. Fixed missing output filename bug when no filename was given
  850. Fixed bug in Compute_CSG_BBox (wrong size to POV_REALLOC())
  851.  
  852. 3.alpha.0.17l     06/07/95 by Chris Dailey
  853. Moved options into a single structure in povray.h
  854. Moved statistics into an array, indices denoted by an enum
  855. Created total statistics array
  856. Move Post_Frame_Cmd_String to after closing of output file to avoid contention
  857.  with shelled out program
  858. Made +SF, +EF handle more like +SR/+ER and +SC/+EC in optin.c
  859. Changed FrameData to FrameSeq
  860. Updated machine-specific os2conf.h and bcos2.mak
  861.  
  862. 3.alpha.0.17k     06/04/95 by Chris Young
  863. INI-style values may now contain blanks. No longer need %b in shell commands.
  864. Implemented bracked sections of INI file.  Put "MYFILE.INI[MYSECTION]" on
  865.  command line.  Only the section [MYSECTION] of file MYFILE.INI is read.
  866.  If no section specified, only unlabled part of INI read.
  867. Fixed latest #switch #range bug reported by DMF.
  868.  
  869. 3.alpha.0.17j     05/31/95 by Chris Young
  870. Yet another bug fixed with #if #else and #declare
  871. Reversed 17h some changes to restore +KF and +KFF
  872.  
  873. 3.alpha.0.17i     05/30/95 by Dieter Bayer
  874. Added GET_KEY(x) macro to machine config files (ibmpc, os/2)
  875. Fixed bug in mesh normal calculation (missing test for null pointer)
  876. Fixed bug in continued animations (only parts of frames where traced 
  877.  after one image was aborted)
  878.  
  879. 3.alpha.0.17h     05/27/95 by Chris Dailey
  880. Removed Subset_Start_Pct and Subset_End_Pct, moved their functionality to
  881.  Subset_Start_Frame and Subset_End_Frame
  882. Allow +SF1.0 and +EF1.0 as special case for last frame
  883. Almost changed flags +KFL and +KL to +KFF and +KF for Initial/Final terminology
  884.  consistency, but +KFF & +KF are tricky.  Instead used +KI and +KF for clock
  885.  Initial/Final, +NFI and +NFF for number frame Initial/Final
  886. Fix help output for above option changes
  887. More changes to option screen for animation
  888. Added POV_SHELLOUT, POV_SYSTEM, and POV_MAX_CMD_LENGTH macros to frame.h,
  889.  (overridable in config.h)
  890. Added Pre_Render_Command, Pre_Frame_Command, Post_Frame_Command, and
  891.  Post_Render_Command .ini file keywords; %b is for a blank, for _Frame_ %o
  892.  is output file name
  893.  
  894. 3.alpha.0.17g     05/23/95 by Chris Young
  895. Fixed a bug with #if #else and #declare
  896.  
  897. 3.alpha.0.17f     05/23/95 by Dieter Bayer
  898. Added code for cyclic animation support (+KC switch, Cyclic_Animation keyword)
  899. Added help screen menue support (define GET_KEY(x) in config.h to get menue
  900.  to work! For MS-DOS that's #define GET_KEY(x) {(x) = getch();} )
  901. Added animation options to option screen
  902. Changed option screen layout (slightly!)
  903.  
  904. 3.alpha.0.17e     05/17/95 by Dieter Bayer
  905. Added code for faked caustics
  906.  
  907. 3.alpha.0.17d     05/16/95 by Dieter Bayer
  908. Modified mesh triangle calculation
  909. Fixed "atmopshere in objects"-bug (atmospheric effects are not calculated
  910.   when inside a transparent object)
  911. Fixed bug in smooth triangle normal calculation in MESH.C
  912.  
  913. 3.alpha.0.17c     05/14/95 by Chris Dailey
  914. Corrected default clock value bug introduced in 16L
  915. Added animation status lines, made slight newline mods to others
  916. Separated out initialization of statistics, print statistics for each frame
  917.  instead of whole animation
  918. Don't use tparse as a temporary variable in optout.c, its value needs to
  919.  stay unchanged between frames to avoid exponential growth
  920. Changed animation defaults as discussed in forum
  921. Changed animation parameter .ini file names (removed Clock_ prefix)
  922. Changed to "Initial"/"Final" terminology for whole animation definition,
  923.  "Start"/"End" terminology for animation subset definition.  This includes
  924.  variable names and .ini file names
  925. Changed filename generation scheme to figure out how many chars the frame
  926.  number takes up in the output filename
  927. Split setup_output_file() to setup_output_file_name() and open_output_file()
  928.  to aid in future "shell out" feature after filename determination and before
  929.  opening
  930. Added POV_NAME_MAX definition to frame.h, overridable in config.h
  931.  
  932. 3.alpha.0.17b     05/11/95 by Dieter Bayer
  933. Added filtering fog (color ... filter) and transmittance threshold (transmit x)
  934. Added missing keywords to the ini-file parser (Vista_Buffer, Light_Buffer,
  935.   Draw_Vistas, Split_Unions, Remove_Bounds)
  936. Changed triangle mesh syntax (mesh{} instead of triangle_mesh{})
  937. Changed atmosphere syntax (scattering instead of reflectivity)
  938. Changed rainbow syntax
  939. Changed radiosity options help screen to fit on a 80x25 screen
  940. Changed "Copyright 199x" into "Copyright 1995"
  941. Changed structs in OCTREE and RADIOSIT into typedefs
  942. Fixed bug in triangle mesh to make the hierarchy flag work correctly
  943. Fixed bug in triangle mesh intersection point test ("missing shadow bug")
  944. Fixed animation loop bug in POVRAY.C as mentioned by Chris Dailey
  945. Removed vista/light buffer tree traversal methods (+up option)
  946. Removed '#include <stdlib.h>' from RENDER.C
  947.  
  948. 3.alpha.0.17a     05/02/95 by Chris Cason
  949. Added histogram code.
  950. Misc spelling fixes, particularly variable Help_Available (:-).
  951.  
  952. 3.alpha.0.17      05/02/95 by Chris Young
  953. Now possible to do #declare everywhere, even within objects (I think?)
  954. Fixed destroy slope_map bug.
  955. Misc bug fixes from recent patches.
  956.  
  957. 3.alpha.0.16l     04/28/95 by Chris Dailey
  958. ANIMATION CHANGES:
  959. parse.c Make pointer NULL after Destroy()ing its contents for Camera,
  960.  do so for Texture while at it
  961. povray.c Moved Initialize_noise() out of FrameRender() loop
  962. povray.c Added Frame Number as @-escape to Output_File_Name: @[0]n, where
  963.  n=max digits.  eg, file@3.tga would give file34.tga, file@03.tga would give
  964.  file034.tga.  I know, @3 is no different than @7, we'll have to come up
  965.  with a more logical scheme.
  966. povray.c Added animation loop
  967. povray.c renamed setup_renderer() to setup_output_file()
  968. povray.c Moved Initialize_Renderer() call into FrameRender()
  969. povray.c Move set_output_file_handle() call into setup_renderer()
  970. povray.c Move a large chunk of main() into new FrameRender() function
  971. express.c Yet slightly different behavior for Clock used without being set -
  972.  inform user about default value, show warning only once
  973. NON-ANIMATION CHANGES:
  974. moved streams_init() call from mem.c to povray.c
  975. cones.c:'Cone_Methods'/discs.c:'Disc_Methods'/bezier.c:'Bicubic_Patch_Methods'/
  976.  julia.c:'Julia_Methods' is declared as both external and static fixed by
  977.  removing its extern declaration in cones.h/discs.h/bezier.h/julia.h
  978. lighting.c moved a brace as requested by Dan Farmer in message #110124,
  979.  which makes calling of do_irid() independent of light source type
  980. converted mem.c function headers from true ANSI to middle ANSI-K&R (*sigh*)
  981. modified other files to user userio.h, mem.h
  982. split memio.c/h to create mem.c/h and userio.c/h
  983. radiosit.c changed ra_average_near() to be usable as parameter to
  984.   ot_dist_traverse(), prototype in radiosit.h.  Note - someone should
  985.   probably REALLY change ot_dist_traverse so that handle,handle1 are
  986.   struct wt_avg *, but I don't feel confident enough to do this
  987. memio.c changed false->FALSE, true->TRUE to fix undefined symbol
  988.  
  989. 3.alpha.0.16k     04/18/95 by Steve Demlow
  990. Fixed stream redirection for non-standard I/O functions
  991. Included octree.h in various places to define a type for radiosit.h
  992. Fixed memory leak in Allocate_Text_Streams in optin.c
  993.  
  994. 3.alpha.0.16j      Apr 16/95 by Jim McElhiney
  995. Added first version of all radiosity code
  996.    -radiosity source files (radiosit.c, radiosit.h, octree.c, octree.h)
  997.    -new flags
  998.    -new progress messages
  999.    -new mosaic preview function...could be integrated in future
  1000.    -trace() returns distance to object hit
  1001. Gamma correction function installed in code, but no option sets it
  1002.    -if you want to try this, set values in source in Gamma_Correct()
  1003. Smooth_Preview capability in the mosaic preview.
  1004.    -Like Gamma correction, there is no switch for this.  Change the
  1005.     variable Smooth_Preview to try it...it is used only when radiosity
  1006.     is on.
  1007. Small change to crackle to avoid value wraparound bugs
  1008.    -note values returned are about 10% smaller...may need colour map change
  1009. Fixed some small compiler issues
  1010.    -unused locals in targa.c and truetype.c
  1011.    -memory addressing error in parse.c
  1012.    -signed/unsigned mismatch warnings in 7 files
  1013.    -floating point errors in boxes.c and julia.c
  1014.    Note:  error in julia.c is flagged, but NOT FIXED...for Dieter to check?
  1015. One user interface change:
  1016.    -when using mosaic preview, when it completes, it now falls through to
  1017.     do the regular detailed trace.  Radiosity requires this behaviour,
  1018.     and I changed it for the regular mosaic preview to match.
  1019.  
  1020.  
  1021. 3.alpha.0.16i     04/09/95 by Dieter Bayer
  1022. Added arc to the rainbow (syntax: 
  1023.   rainbow { 
  1024.     up <VECTOR>          - rainbow's "up" vector, i.e. angle = 0
  1025.     falloff_angle1 FLOAT - angle of solid rainbow part
  1026.     falloff_angle2 FLOAT - angle of total rainbow
  1027.   }
  1028.   The rainbow arc goes from -falloff_angle2 to +falloff_angle2
  1029.   and is blended into the background from -falloff_angle2 to
  1030.   -falloff_angle1 and from falloff_angle1 to falloff_angle2,
  1031.   i.e. the "solid" (i.e. unblended) part of the rainbow
  1032.   goes from -falloff_angle1 to +falloff_angle2. If falloff_angle1
  1033.   is omitted no blending takes places. If falloff_angle2 is
  1034.   omitted the arc covers 360 degrees.
  1035. Added seconds time stats.
  1036. Changed help screen layout
  1037. Moved ini-file and command line parser into OPTIN.C/OPTIN.H
  1038. Moved code from main() into new functions
  1039. Fixed memory leakage in Copy_Rainbow() in ATMOSPHERE.C
  1040. Fixed memory leakages that occured if redirection was used (using POV_REALLOC()
  1041.   instead of POV_MALLOC() in process_variable() in OPTIN.C)
  1042. Fixed prototypes in POVRAY.C
  1043. Fixed divide by zero bug in Print_Stats() in POVOUT.C
  1044. Renamed OPTIONS.C/H to OPTOUT.C/H
  1045.  
  1046. 3.alpha.0.16h     04/07/95 by Chris Young
  1047. Fixed expression parse bug when parens used around vector.
  1048. Fixed problems in counter_to_string where \0 was written beyond
  1049.  end of string and leading spaces were too long.
  1050. Fixed memory leaks when previous blend map is overwritten.
  1051.  
  1052. 3.alpha.0.16g     04/05/95 by Dieter Bayer
  1053. Added syntax of animation options to help screen
  1054. Added FRAND() macro to TEXTURE.H to generate random number x (0 <= x <= 1)
  1055. Changed POV_Std_rand() to use faster shift instead of divide
  1056. Changed calls to POV_RAND() into calls to FRAND() were applicable
  1057. Fixed memory leakage in stream allocation
  1058.  
  1059. 3.alpha.0.16f     04/04/95 by Steve Demlow
  1060. Added options, for each output text stream, to turn off console output
  1061.  and/or to write to a default or specified file.
  1062. Added option to write all .INI settings to a file.
  1063. Added stdin support for script files and stdout support for output image
  1064.  files.
  1065. Turned off "Press any key" message if no WAIT_FOR_KEYPRESS is defined.
  1066.  
  1067. 3.alpha.0.16e     04/4/95 by Eduard Schwan
  1068. Added missing prototype for alt_main in POVRAY.H
  1069. Added MAIN_RETURN_STATEMENT at end of main() in POVRAY.C
  1070. Optimized the way Authors strings were allocated and displayed in OPTIONS.C
  1071. Moved the COOPERATE calls around a little to gain some Mac speed
  1072.  
  1073. 3.alpha.0.16d     03/29/95 by Chris Young
  1074. Added #switch, #case, and #range directives.
  1075. Fixed #if #else bugs.
  1076. Reversed a 16b patch that causes fatal errors when clock used without
  1077.  being set.  Changed to warning.  Uses default clock=0.0.
  1078. Fixed +Knnn.n switch bug.
  1079. Tiny change in options.c for extra precision counters.
  1080. New scene files.  Delete CASE1.POV & CASE2.POV.  No longer valid.
  1081.  
  1082. 3.alpha.0.16c     03/28/95 by Dieter Bayer
  1083. Updated credit screen
  1084. Fixed bug in triangle scaling
  1085. Fixed bug in triangle mesh bounding box calculation
  1086.  
  1087. 3.alpha.0.16b     03/26/95 by Chris Dailey
  1088. Added preliminary animation support, including command line args, ini file
  1089.  support, variable storage, and a little consistency checking.
  1090. Fixed a small bug with LAST_OPTION
  1091. Some OS2 files updated for 3.0
  1092.  
  1093. 3.alpha.0.16a     03/24/95 by Dieter Bayer
  1094. Added support for targa type 11 files
  1095. Added support of high resolution counter (64bit), currently up to 15 decimal 
  1096.  digits are used for counter output (counter length defined in FRAME.H)
  1097. Changed stats screen layout
  1098. Changed BOUND_HUGE to 2e10 to avoid floating point overflow 
  1099.  as noted by Jim McElhiney
  1100. Fixed wrong COMMA_TOKEN in TOKENIZE.C
  1101. Fixed unitialized color bug in material_map
  1102.  
  1103. 3.alpha.0.16     03/13/95 by Chris Young
  1104. Added #if (COND) #else #end and #if (COND) #end parsing.
  1105. Misc fixes and things necessary for #if and future conditionall stuff.
  1106. Full sync of all files.
  1107.  
  1108. 3.alpha.0.15n     03/10/95 by Chris Young
  1109. Fixed Make_RGB bug in Create_Finish
  1110. Deleted extra braces in default color maps
  1111. Changed && to || in deciding when to do reflection
  1112.  
  1113. 3.alpha.0.15m     03/08/95 by Dieter Bayer
  1114. Added colored reflections (finish { reflection <COLOR> } )
  1115. Added individual ambient color (ambient <COLOR>). Note that a modifications
  1116.  to Parse_Colour() has still to be made to be able to parse only one float.
  1117.  Currently there's only a temporary fix in EXPRESS.C as suggested by Chris Y.
  1118. Added ambient_light { color <COLOR> } for global ambient lighting
  1119. Fixed "Initialization is only partially bracketed" warnings
  1120. Fixed bug in POLY.C
  1121.  
  1122. 3.alpha.0.15l     03/02/95 by Dieter Bayer
  1123. Changed no_hierarchy to hierarchy keyword (switch by on/off, true/false, ...)
  1124. Fixed bug in Bool_Flag() in OBJECTS.H
  1125. Fixed bug in height field scaling (it now works according to the docs)
  1126. Fixed bug in height field dda traversal
  1127. Fixed bug in height field triangle intersection
  1128. Made some changes to POLY.C
  1129. Renamed Point variables in MESH.C
  1130.  
  1131. 3.alpha.0.15k     02/28/95 by Chris Young
  1132. Added repeat warp with offset and flip.  For example:
  1133.   warp {repeat 3*x offset <0,0.2,0.5> flip y}
  1134.   Repeats the pattern every 3 units in the x direction.  Offsets
  1135.    each successive copy by "offset".  Offsets accumulate.
  1136.    Flip alternate odd/even copies in the specified direction.  Specifically
  1137.    "flip y" does "scale <1,-1,1>" to odd copies.
  1138. Deleted translate, rotate, scale & transform inside warp{...} stmnt.
  1139. Misc internal warp changes and bug fixes.
  1140.  
  1141. 3.alpha.0.15j     02/27/95 by Dieter Bayer
  1142. Added automatic resizing of symbol and constant tables
  1143. Changed triangle mesh triangle texture syntax to texture { Name }
  1144. Fixed bug in height field bounding box calculation
  1145. Fixed some compiler warnings
  1146.  
  1147. 3.alpha.0.15i     02/23/95 by Dieter Bayer
  1148. Modified height field normal calculation and triangle intersection (small speed-up)
  1149. Fixed a bug in height field intersection testing
  1150.  
  1151. 3.alpha.0.15h     02/23/95 by Dan Farmer
  1152. Added 16 bit grayscale output for all output types (tga, tga-compressed,
  1153. ppm, raw, dump).  Currently uses +FxH commandline switch (where "x" is
  1154. the mode), but may be changed to a +Q setting in the future.  Sets the
  1155. grayscale palette for preview mode when 16 bit output mode is in effect.
  1156.  
  1157. 3.alpha.0.15g     02/23/95 by Dieter Bayer
  1158. Added individual texturing of triangles to triangles meshes
  1159. Merged calls to functions for atmospheric effects into two new functions:
  1160.   Do_Infinite_Atmosphere() and Do_Finite_Atmosphere() to avoid a copy of
  1161.   all these calls in RENDER.C and VBUFFER.C
  1162.  
  1163. 3.alpha.0.15f     02/22/95 by Chris Young
  1164. Added warp{...} statement to Parse_Pattern
  1165. Implemented turbulence warp and transformation warp
  1166. Included hooks for repeat, spiral and black_hole warps.
  1167. Added WARPS.C and WARPS.H
  1168. Updated DJGCC & Borland make files (need to verify dependency)
  1169.  
  1170. 3.alpha.0.15e     02/22/95 by Dieter Bayer
  1171. Added the call to plot_pixel() to Supersample() that I removed earlier
  1172. Fixed bug in height field bounding box calculation (PARSE.C)
  1173.  
  1174. 3.alpha.0.15d     02/20/95 by Dieter Bayer
  1175. Fixed bug in HFIELD.C (DDA setup)
  1176. Fixed bug in QUADRICS.C (intersection test)
  1177.  
  1178. 3.alpha.0.15c     02/15/95 by Dieter Bayer
  1179. Added triangle_mesh syntax
  1180. Added pseudo-number generator in TEXTURE.C
  1181. Rewrote HFIELD.C
  1182. Changed triangle mesh data structure (normals of unsmoothed triangles
  1183.   are now also stored as indices into the normal list)
  1184. Changed calls to rand() and srand() into calls to POV_RAND() and POV_SRAND()
  1185. Replaced In_Polygon with a much faster version by Eric Haines from GGems IV
  1186. Removed support for raw files
  1187. Removed unnecessary call to display_plot() from Supersample() in RENDER.C
  1188. Removed unnecessary function surface_area() from BBOX.C
  1189. Fixed bug in Solve_Polynomial() with higher order polynomials
  1190.  
  1191. 3.alpha.0.15b     02/13/95 by Dieter Bayer
  1192. Added smoothing to triangle mesh object
  1193. Added raw keyword to triangle mesh syntax to specify the raw file
  1194. Added autodetection of 9, 12, and 18 numbers/triangle raw file format
  1195. Fixed several bugs in MESH.C
  1196. Fixed bug that occured when the priority queue was resized (BBOX.C)
  1197. Fixed bug in VBUFFER.C
  1198. Fixed bug with +ms option to make it work as intended
  1199. Fixed bug with help option -h
  1200. Fixed bug in BBOX.C with number of objects smaller than threshold (+mb)
  1201.  
  1202. 3.alpha.0.15a     02/06/95 by Dieter Bayer
  1203. Added triangle mesh object (reads RAW format; no smoothing yet)
  1204. Added -h? options to show help screens
  1205. Changed BOUND.C: SNGL instead of DBL is used to store bounding boxes 
  1206.  (Beware that Assign_Vector() doesn't work with bounding boxes; use
  1207.  Assign_BBox_Vector() instead. Be aware of the new bbox macros in FRAME.H);
  1208.  functions to build and intersect a bbox tree are now reentrant.
  1209. Changes to BLOB.C (max. number of elements is arbitrarily set to 1,000,000; 
  1210.  data structure changed; bounding sphere stuff moved into BSPHERE.?)
  1211. Changed sky_sphere to make use of the filter and transmittive parts
  1212.  of a color (filtered and unfiltered translucency)
  1213. Changed help and credit screens
  1214. Changed TRIANGLE.C
  1215. Fixed bug with transformed spotlights
  1216. Fixed bug in Compute_Triangle() that set correct triangles as degenerate
  1217. Renamed BOUND.? into BBOX.? (remove BOUND.?)
  1218. Created BSPHERE.C and BSPHERE.H
  1219.  
  1220. 3.alpha.0.15      01/30/95 by Chris Young
  1221. Added "average" pattern type for pigment, normal and textures.
  1222. Includes Xander's latest truetype code.
  1223. Misc. cleanups.
  1224.  
  1225. 3.alpha.0.14i     01/29/95 by Chris Cason
  1226. Added PPM & PGM file format support for image_map, bump_map,
  1227.  material_map and height_field.  Added PPM output via +FP switch.
  1228. New files PPM.C, PPM.H, PGM.C, PGM.H files.  Make files must be updated.
  1229.  
  1230. 3.alpha.0.14h     01/25/95 by Dieter Bayer
  1231. Added cylindrical light source.
  1232.  
  1233. 3.alpha.0.14g     01/24/95 by Chris Young
  1234. Added "turb_depth" keyword for fog & mist.  The "turbulence <nnn,nnn,nnn>"
  1235.  continues to control the size of the turbulence pattern in the x,y,z 
  1236.  directions while turb_depth varies the front-to-back depth of the turb.
  1237.  Typical turb_depth should be 0.0 to 1.0 with the default 0.5.
  1238. Fixed highlights and fill lights as requested by DMF
  1239. Misc cleanup of "variable assigned value that is never used" warnings.
  1240.  
  1241. 3.alpha.0.14f     01/23/95 by Dieter Bayer
  1242. Added auto-bounding of elliptical paraboloids
  1243. Fixed bug with distance=0 in fogs
  1244. Fixed problems in Compute_Quadric_BBox()
  1245.  
  1246. 3.alpha.0.14e     01/20/95 by Chris Young
  1247. Height field bug fixed
  1248. Removed duplicate call to close_all
  1249. Minor BC++ 4.5 fixes
  1250.  
  1251. 3.alpha.0.14d     01/18/95 by Dieter Bayer
  1252. Changed calculation of attenuation for fading light sources
  1253.   (light color at fade_distance equals the specified light color)
  1254. Fixed bug with mists/fogs and infinite rays
  1255. Fixed bug with multiple fogs
  1256. Fixed bug with atmosphere and area light sources
  1257. Fixed bug with clipped polys
  1258.  
  1259. 3.alpha.0.14c     01/13/95 by Dieter Bayer
  1260. added fade_distance to light sources
  1261. Changed calculation of attenuation for fading light sources
  1262. Changed falloff_power to fade_power
  1263. Fixed bug with overlapping rainbows
  1264.  
  1265. 3.alpha.0.14b     01/10/95 by Chris Young
  1266. Implemented built-in float identifiers "on", "true", "yes" with value 1.0
  1267. Implemented built-in float identifiers "off", "false", "no" with value 0.0
  1268. Added float functions 
  1269.      acos(A)   arc-cosine of A
  1270.      asin(A)   arc-sine of A
  1271.      tan(A)    tangent of A
  1272. Added additive (non-filtered) transparency via 5th color channel.
  1273. Added "transmit" keyword (for example "color red 0.6 transmit 0.7")
  1274. Added "rgbt" and "rgbft" keywords (similar to "rgbf" but for transmit).
  1275.   The amount of the transmit value is the percent of light that is allowed
  1276.    to pass through in a non-filtered way.  Note that light from the object
  1277.    itself is diminished by (1.0-transmit) so a transmit value of 1.0 means
  1278.    that the object totally disapears.
  1279.  
  1280. 3.alpha.0.14a     01/10/95 by Dieter Bayer
  1281. Added volume rendering to simulate atmospheric scattering
  1282. Added light attenuation due to light source distance
  1283. Changed sky_blend to sky_sphere 
  1284. Fixed a bug in PARSE.C with planes and 'zero' normals
  1285. Fixed a bug in POVRAY.C that occured when diskwrite was suppressed
  1286. Removed YZFog
  1287. Removed some unused variables from LIGHTING.C and RENDER.C
  1288. Removed (temporarily) support of bounded fog (this is probably something for
  1289.   version 4 because a redesign of the intersection functions for a better
  1290.   CSG handling would help pretty much)
  1291.  
  1292. 3.alpha.0.14      01/09/95 by Chris Young
  1293. Added declared fog, rainbow, skyblend
  1294. Added several new keywords to parser but have not yet implemented them
  1295. Fixed empty bounded_by or clipped_by bug
  1296.  
  1297. 3.alpha.0.13g     01/05/95 by CY
  1298. Adds texture_map and makes changes to tiles & material_map
  1299. Open handle fix from Eduard
  1300.  
  1301. 3.alpha.0.13f     01/02/95 by Xander uploaded by CY
  1302. TRUETYPE.C changes to fix kerning
  1303.  
  1304. 3.alpha.0.13e     01/02/95 by Dieter Bayer
  1305. Fixed bounding box problem with clipped planes
  1306. Changed MAX_INTERSECTIONS to MAX_FOG_HITS in ATMOSPH.C
  1307.  
  1308. 3.alpha.0.13d     12/94 by Eduard Schwan
  1309. Changes to Mosaic preview
  1310.  
  1311. 3.alpha.0.13c     12/22/94 by Dieter Bayer
  1312. changed type BLOBTYPE to type int in BLOB.C function headers.
  1313.  
  1314. 3.alpha.0.13b     12/94 by Chris Young
  1315. Changes for static/global stuff accidently left out of 13.
  1316.  
  1317. 3.alpha.0.13a     12/21/94 by Dieter Bayer
  1318. removed unneeded variable cd1 from BOUND.C
  1319. removed unneeded function declaration from PARSE.C
  1320. fixed some bugs in JULIA.C
  1321. fixed bug in BLOB.C
  1322. changed maximum blob component size to 65000. Storage data type is
  1323.   defined now to make it easy to change (currently unsigned short)
  1324. made some minor changes to the options layout in OPTIONS.C
  1325.  
  1326. 3.alpha.0.13      12/19/94 by Chris Young
  1327. About a gazillion functions and variables made static and other
  1328.  changes suggested by Clint.
  1329. Patches for fussy Unix compilers by Steve Demlow
  1330. Sync up of all 3.0.12 patches
  1331.  
  1332. 3.alpha.0.12h-k   12/18/94 by Dieter Bayer
  1333. changed max. number of blob component to 65000 (values are now
  1334.   stored in unsigned shorts to save memory)
  1335. added credit screen (has to be updated).
  1336. added quaternion julia object by Paul Massinimo. New files JULIA.C & JULIA.H
  1337. added Steve Anger's patch to fix infinite loop in POV_RECLLOC()
  1338. added initializations to expressions in EXPRESS.C
  1339. fixed memory leakages in BLOB.C, PARSE.C, POLYGON.C, VBUFFER.C
  1340. fixed output buffer size bug (negativ buffer size if buffer was > INT_MAX byte)
  1341. fixed default filename bug in POVRAY.C. It wasn't displayed (e.g. data.tga)
  1342. changed max. index value (has to be smaller than 1) in Rainbow() and 
  1343.   Skyblend() to suit Compute_Pigment()
  1344. changed usage screen
  1345. changed options screen
  1346. changed call to Build_Bounding_Slabs() to always print number of objects
  1347. changed blob component limit to MAX_INT
  1348. changed 'int register' to 'register int' in EXPRESS.C
  1349. moved usage, option, and stats stuff into OPTIONS.C/OPTIONS.H
  1350. moved grid stuff from GRIDS.H into RENDER.C (delete GRIDS.H!)
  1351. removed some declared but unused variables
  1352. removed all unnecessary MATRIX referencing in function parameters. (vectors 
  1353.   and arrays are always passed by reference so referencing isn't necessary.)
  1354. removed unnecessary 'External variables' section from .c files
  1355.   (external variables are included via include files)
  1356.  
  1357. 3.alpha.0.12g   by Chris Young
  1358. Split PARSE.C into PARSE.C & PARSTXTR.C. Added also PARSTXTR.H
  1359. Misc static changes, bug fixes
  1360.  
  1361. 3.alpha.0.12f   12/10/94 by Eduard Schwan
  1362. Misc bug fixes in MEMIO.C, FRAME.H, TTF.C necessary for Mac.
  1363.  
  1364. 3.alpha.0.12e   12/12/94 by Dieter Bayer
  1365. Changed blob component maximum (=30000)
  1366. Changed blob intersection list (now dynamically allocated)
  1367. Changed command line option +UR to +UD and +UU to +UR.
  1368. Changed calls to Fog() and Rainbow(). They are no longer called from
  1369.   Determine_Apparent_Colour(). They are only called from Trace()
  1370.   and Trace_Primary_Ray().
  1371. Changed depth threshold for superquadric ellipsoids.
  1372. Fixed roughness=0 bugs in PARSE.C.
  1373.  
  1374.  
  1375. 3.alpha.0.12a thru d   12/09/94 by Chris Young
  1376. Implemented normal_map for all normals.
  1377.    normal_map {
  1378.      [0.0 NORMAL_BODY]
  1379.        ....
  1380.      [N.N NORMAL_BODY]
  1381.    }
  1382. Implemented slope_map for pattern-based normals.
  1383.    slope_map {
  1384.      [0.0 <HEIGHT,SLOPE>]
  1385.        ....
  1386.      [N.N <HEIGHT,SLOPE>]
  1387.    }
  1388. Changed scale on scallop_wave to match other wave types.
  1389. TTF bug fixes and split characters into individual objects so that
  1390.   autobounding works.
  1391. Added exit code parameter to FINISH_POVRAY(n).  Now FINISH_POVRAY(n)
  1392.   should call exit(n);
  1393. Several incarnations of quilted taken in/out.  Final version uses
  1394.   Dan's normal and CY's pigment.
  1395. Numerous bug-fixes by Eduard and Dieter.
  1396. Total rewrite of how pattern-based normals work.  New method fixes
  1397.   bad design flaw but produces slightly different results.  At least
  1398.   it works consistently and efficently.
  1399.  
  1400.  
  1401. 3.alpha.0.12    11/19/94 by Chris Young
  1402. Superelipsoids added by Dieter & Xander (new SUPER.C & SUPER.H)
  1403. Major rewite of color_map code to allow pigment_map and
  1404.  to pave the way for normal_map, slope_map, & texture_map
  1405. Implemented pigment map for all except image_map
  1406. Rewrite of quilted pigment & normal
  1407. Proportional spacing for TTF added by Xander
  1408. Cylindrical camera models by Dieter
  1409. Included IBM.OLD & CONFIG.OLD for compilers that aren't yet ported
  1410. Fixed bug in mosaic preview by Eduard
  1411.  
  1412.  
  1413. 3.alpha.0.11    11/01/94 by Dieter Bayer
  1414. Added improved bounding hierarchy creation to BLOB.C.
  1415. Added initialization of light list in LIGTHING.C.
  1416. Added test for focal blur to VBUFFER.C.
  1417. Added test for 'once' images in Test_Opacicty() (fixes POV3BUG.POV bug).
  1418. Added code to ibm.c that uses gotoxy(1,24) instead of gotoxy(1,15) in 
  1419.   IBM_Finish() if compiled for DJGPP to avoid segmentation violation.
  1420. Changed polygon data structure (saves memory for copied polygons).
  1421. Removed unnecessary workaround for POV_REALLOC() in CSG.C.
  1422. Removed unnecessary 'Inverted' element from TTF structure.
  1423. Removed 'Rewritten and ...' lines from function headers.
  1424. Removed single '/* [DB ?/94] */' comments.
  1425.  
  1426.  
  1427. 3.alpha.0.10    10/30/94 by Chris Young
  1428. Misc lbuffer & vbuffer fixes by Dieter
  1429. Misc memio fixes by Steve anger
  1430. Major rewrite of pigment & normal code by CY
  1431.   Added PATTERN.C & PATTERN.H
  1432.   Moved many routines and rewrote parameter lists.
  1433.   Added normal{...} types agate, bozo, brick, checker, crackle, gradient,
  1434.     granite, hexagon, leopard, mandel, marble, onion, radial, spiral1,
  1435.     spiral2, spotted & wood.
  1436.   Note syntax for normal is that bump amount is always last. i.e.
  1437.     normal {gradient <DIRECTION>, AMOUNT ...}
  1438.     normal {mandel ITERATIONS, AMOUNT ...}
  1439.   Modified syntax for spiral1 and spiral2 such that keyword must be
  1440.     followed by float value specifying number of arms.  Previously
  1441.     octaves was used. i.e. pigment{spiral1 5}
  1442.   Added wave type keywords for most pattern based pigments and normals
  1443.     ramp_wave, triangle_wave, sine_wave, scallop_wave
  1444. Note in 3.alpha.0.9 VECT.C was renamed MATH.C & MATH.H but this caused
  1445.   conflicts with <math.h> system file.  Now renamed it to POLYSOLV.C &
  1446.   POLYSOLV.H. Moved some macros from MATH.H to FRAME.H.
  1447. Note only the Borland & DJGCC make files are current.  Dependancy info
  1448.   in IBMGCC.MAK may be wrong.
  1449.  
  1450.  
  1451. 3.alpha.0.9    09/28/94 by Dieter Bayer
  1452. Added transformations to blob components (translation, scaling, rotation).
  1453. Added multi-textured blob support.
  1454. Added optional strength keyword to new blob component syntax.
  1455. Added no_hierarchy keyword to blobs to avoid the creation of an internal
  1456.   bounding sphere hierarchy.
  1457. Added improved color calculation for metallic surfaces.
  1458. Added vista buffer (+uv option, +upxx option for descending method).
  1459. Added light buffer (+ul option, +upxx option for descending method).
  1460. Added drawing of vista rectangles; kind of a preview (+ur option).
  1461. Added splitting of bounded unions with finite children (+su option).
  1462. Added code to resize priority queue in BOUND.C to avoid queue overflows.
  1463. Added code to allocate/free priority code outside Bounds_Intersect().
  1464. Added code to BOUND.C that puts all infinite objects in the first node
  1465.   of the bounding hierarchy root. Thus the hierarchy won't "mess up".
  1466. Added infinite flag to objects to avoid testing the bounding slab of 
  1467.   infinite objects during bounding hierarchy traversal. This saves 
  1468.   time because the bounding box of an infinite object will always be hit.
  1469. Added code to Parse_Object_Mods() to calculate the bounding box of any
  1470.   bounding or clipping objects and to assign the smaller one to the object
  1471.   if the object's bounding box is larger.
  1472. Added code to Parse_Camera() to make sure that camera vectors are
  1473.   perpendicular to each other. That is a must for the vista buffer.
  1474. Added code to Intersect_Box() to determine which side is hit in those
  1475.   cases where intersecion points are close to each other. This fixes
  1476.   surface acne problems at the edges of a box due to the usage of the
  1477.   wrong surface normal (see CHARS.POV e.g).
  1478. Modified BOUND.C to work with vista/light buffer.
  1479. Fixed memory leaks in DISCS.C, LATHE.C, PRISM.C, SOR.C, and TORUS.C.
  1480. Fixed threshold problem in normal calculation of cones/cylinders.
  1481. Created missing .h files for most .c files.
  1482. Lots of code "clean-ups" and re-formatting.
  1483.  
  1484. 3.alpha.0.8    09/22/94 by CEY
  1485. From Steve Anger:
  1486.   Memory management parts of MEMIO.C See comments in MEMIO.C for details.
  1487.  
  1488. From Chris Young:
  1489.   Split "Information" printf function into 3 new functions "Render_Info",
  1490.      "Status_Info" and "Debug_Info".
  1491.   All printf to stdout or stderr now converted to new i/o functions such
  1492.      as Render_Info, etc.
  1493.   All exit() calls re-directed through "Error".
  1494.   Fixed +ER +EC bug reported by DMF.
  1495.   Fixed TRUETYPE.C MAC macro by Eduard.
  1496.   Major rewrite of all aspects of IBM.C including text and video.
  1497.     Text changes are work-in-progress.  Requires CONIO.H macros a la Borland.
  1498.     Video requires Kendall's PMODE.LIB for all compilers.  Note DJGCC is 
  1499.     unsupported but has been faked with compatible macros.  VESA.C no longer
  1500.     required. TIGA support deleted. Targa_Plus code needs rewritten but is
  1501.     stubbed out.
  1502.   Misc bug fixes.
  1503.  
  1504. 3.alpha.0.7    08/31/94 by CEY
  1505. The following items from Dieter
  1506.    - memory leackage in BLOB.C fixed (bounding hierarchy is deleted now)
  1507.    - 'CROSSBLOB' bug fixed 
  1508.    - fillite light source bug fixed (as mentioned by Dan Farmer)
  1509.    - 'toroids in CSG' bug fixed (larger tolerance in Inside_Poly())
  1510.    - name Polygon changed to Polyg in POLYGON.C/POLYGON.H.
  1511.    - Only one function is now used to solve a polynomial
  1512.        c[0] * x^n + c[1] * x^(n-1) + ... + c[n-1] * x + c[n] = 0.
  1513.      Solve_Polynomial(n, c, r, sturm, epsilon)
  1514.        n       - order of polynomial
  1515.        c       - coefficients
  1516.        r       - roots found
  1517.        sturm   - use sturmian root solver (TRUE)
  1518.        epsilon - root elimination tolerance, i.e. roots with
  1519.                  |x| < epsilon will be eliminated (epsilon = 0
  1520.                  means that no roots will be eliminated)
  1521. From Eduard the mosaic preview.  Uses +SPnn +SEnn
  1522.  Requires new display_plot_rectangle in MACHINE.C
  1523.  Does not do file output.
  1524. From CEY:
  1525.  Misc bug fixes from various sources.
  1526.  More work-in-progress on error messages etc.
  1527.  
  1528. 3.alpha.0.6    08/19/94 by Dieter Bayer
  1529. Added new camera models and camera ray pertubation.
  1530. Added lathe primitve.
  1531. Added polygon primitive.
  1532. Added prism primitive.
  1533. Added surface of revolution primitive.
  1534. Added "rainbow" and "skyblend" (ATMOSPH.C).
  1535. Added cylindrical blobs and blob bounding hierarchy.
  1536. Added improved torus primitive (faster intersection testing)
  1537. Added two spiral textures.
  1538. Added Compute_???_BBox() to all objects.
  1539. Added function Solve_Polynomial_With_Root_Elimination() to VECT.C that uses 
  1540.  order reduction to eliminate roots at 0 (helps avoiding "surface acne").
  1541. Added function Solve_Polynomial() to VECT.C to easily solve
  1542.  a polynomial of order n (sturm can be specified).
  1543. Added code for tighter bounding boxes of CSG intersections.
  1544. Added cache for shadow testing to avoid repeated tests with layered textures.
  1545. Added test for opaque objects that speed up Filter_Shadow_Ray().
  1546. Added 4x4-matrix inversion to MATRICES.C.
  1547. Added new vector macros (see VECTOR.H).
  1548. Added #defines to .H files so that they are just processed once if
  1549.  they get included more than once.
  1550. Added memory clean-up to HFIELD.C.
  1551. Fixed iridescence bug due to uninitialized values in Create_Finish().
  1552. Fixed bug in sbisect() in VECT.C.
  1553. Fixed camera bug (ray direction parallel to y-axis).
  1554. Fixed "trace level bug". Now the correct maximum level traced is shown.
  1555. Fixed memory leakage bug in Free_Noise_Tables().
  1556. Fixed problems with CSG and declared height fields (most probably).
  1557. Fixed bug in Where_Error().
  1558. Moved Add_Pigment() from LIGHTING.C to PIGMENT.C and made all pigment
  1559.  functions static.
  1560. Moved Perturb_Normal() from LIGHTING.C to NORMAL.C and made all normal
  1561.  perturbing functions static.
  1562. Moved all fog functions to ATMOSPH.C and "merged" them into one function.
  1563. Changed POV 2.x difficult_coeffs() in VECT.C to version from POV 1.0
  1564.  to solve problems with vanishing objects (new version is still there).
  1565.  Problems with surface acne should be solved by root elimination.
  1566. Changed normal functions so that a pointer to the intersection structure
  1567.  is passed instead of the intersection point (more flexible).
  1568. Changed normal calculation of boxes. It now uses information on the side
  1569.  hit by the ray that was derived during intersection testing.
  1570. Changed some global functions to static.
  1571. Changed height field intersection testing to use only one function
  1572.  for CSG and non-CSG height fields.
  1573. Changed disc functions to get tighter bounds and to increase speed.
  1574. Changed normal calculation of smooth triangles to increase speed.
  1575. Renamed varibales min and sec to minutes and seconds in POVRAY.C.
  1576. Removed unused global variable Shadow_Test_Flag.
  1577. "Clean-up" of most primitive related files (cosmetic changes, added
  1578.  comments, small speed-ups).
  1579. Compressed Targa now supported via +FC switch.
  1580.  
  1581. 3.alpha.0.5    08/08/94
  1582. Fixed vrotate bug.
  1583. Added Dan Farmer's focal blur
  1584. Added Dan Farmer's quilted normal pattern
  1585. Fixed truetype problems.  Note .TTF file must be in current directory.
  1586.   Cannot find TTF on +L paths.
  1587. New error message dumps lines on parse errors.
  1588. Relational operators < <= != = >= > added.  Note relational expressions
  1589.   must be enclosed in parens.
  1590. Logical operators & | ! added.
  1591. Conditional expressions (c)?a:b added.
  1592.  
  1593. 3.alpha.0.4    07/16/94
  1594. Added Dieter's patches to remove various cache values.
  1595. Added Dieter's patches to combine object flags into bit flags.
  1596. Began outlining new message output functions in new MEMIO.C
  1597. Converted Xander's TRUETYPE.C to 3.x.  It doen't work yet.
  1598. Deleted TIGA support from Borland version.
  1599.  
  1600. 3.alpha.0.3    06/27/94
  1601. Fixed typo in VSumSqr macro in VECTOR.H affecting crackle
  1602. Fixed uninitalized Background_Colour in PARSE.C
  1603. Fixed 0.0 constant in Warn in PARSE.C
  1604. Fixed STAT.OUT that got stuck "on"
  1605. Added Automatic Depth Control (ADC) from Dan Farmer
  1606. Added fill lights, number of waves, fisheye, new fog types, and
  1607.   brick pigment from Dan Farmer
  1608. Added first round rewrite of expression parser.  Includes the following
  1609.   functions:
  1610.   These return float values...
  1611.     abs(A)        absolute values of A
  1612.     atan2(X,Y)    arc-tangent in radians of (X/Y)
  1613.     ceil(A)       round up to next integer value A
  1614.     clock         value of +K switch
  1615.     cos(A)        cosine of A where A is in radians
  1616.     degrees(A)    convert A from radians to degrees
  1617.     div(A,B)      integer part of (A/B)
  1618.     exp(A)        e-to-the A power
  1619.     int(A)        integer part of A
  1620.     log(A)        base e logarithm of A
  1621.     max(A,B)      maximum of A and B
  1622.     min(A,B)      minimum of A and B
  1623.     mod(A,B)      A modulo B, the remainder of A/B
  1624.     pi            constant 3.3.1415926535897932384626
  1625.     pow(A,B)      raise A to the B power
  1626.     radians(A)    convert A from degrees to radians
  1627.     sqrt(A)       square root of A
  1628.     vdot(V1,V2)   dot product of vectors V1 and V2
  1629.     vlength(V1)   length of vector V1
  1630.     version       value of version variable
  1631.   These return vector values...
  1632.     vaxis_rotate(V1,V2,D)     rotate point V1 by D degrees about any 
  1633.                                 arbitrary axis V2 (not just coordinate
  1634.                                 axes) 
  1635.     vcross(V1,V2)             cross product of V1 X V2
  1636.     vnormalize(V)             scale V to unit length
  1637.     vrotate(V1,V2)            rotate point V1 about coordinate axes by
  1638.                                 V2 amount of degrees.  For example:
  1639.                                 vrotate(V1,30*y) rotates V1 by 30 degrees
  1640.                                 about y-axis. 
  1641.     x, y, z                   constant unit vectors
  1642. Added expression parsing to colors: White*0.536-Red*0.1
  1643. Made "color" keyword optional everywhere except old style color maps.
  1644.  
  1645.  
  1646. 3.alpha.0.2    06/02/94
  1647. Added Steve Anger's memory cleanups.
  1648. Added crackle pigment but it contains a negative sqrt bug.
  1649. Added modified version of Dan Farmer's irid code.
  1650.    irid {FLOAT [thickness FLOAT] [turbulence FLOAT] }
  1651.    Other irid options to be added later.
  1652. Fixed Antialias_Threshold bug from 3a.0.1
  1653. Changed several .INI variables so the only set defaults but do not
  1654.    turn options on.
  1655. Changed variable name in GIFDECOD.C per Eduard's request.
  1656. Fixed spelling of sturm in PARSE.C error message.
  1657.  
  1658.  
  1659. 3.alpha.0.1    04/28/94
  1660. Implemented .INI file parsing system.  Works with switches and .DEF
  1661.    files too.
  1662. Eliminated case sensitivity option in TOKENIZE.C
  1663. Eliminated +T case sensitive switch.
  1664. Eliminated sub-options of +V switch (needs more work).
  1665. Changed when +SR, +SC, +ER, +EC take effect when using fractional values.
  1666.    For example: +W320 +SR0.1 +W640 used to result in +SR32
  1667.     now late binding results in +SR64.  Order of specifing switches no 
  1668.     longer hurts.
  1669. Now +B0 or -B0 turns off any previous +Bnnn setting.  Formerly any +B setting
  1670.    could not be overridden once set.  Now it can be.
  1671.  
  1672. 3.alpha.0.0    04/06/94
  1673. Initial 3.0 version converted all VECTOR & COLOUR structs to arrays.
  1674. Added +Xnnn command-line switch to only check for keypress every nnn pixels.
  1675.